/**
 * 延时执行函数
 * @description 提供多种延时实现方式，支持异步和同步用法
 * @param {number} ms - 延时时间（毫秒）
 * @returns {Promise<void>} 返回 Promise 用于异步等待
 * @example
 * // 异步使用
 * await sleep(1000); // 等待大约1秒
 * 
 * // 同步阻塞（不推荐）
 * sleep.sync(1000); // 阻塞大约1秒
 */
export const sleep = (ms: number): Promise<void> => {
  return new Promise(resolve => setTimeout(resolve, ms));
};

/**
 * 同步阻塞的延时实现（不推荐使用）
 * 使用 requestAnimationFrame 代替 while 循环，减少 CPU 占用
 */
sleep.sync = (ms: number): void => {
  const start = Date.now();
  const loop = () => {
    if (Date.now() - start >= ms) return;
    requestAnimationFrame(loop);
  };
  loop();
};
